-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(base): change base to SeaweedFS #1
Conversation
andrewazores
commented
Jan 15, 2024
- chore(base): change base to SeaweedFS
- add customized config template and entrypoint script
- add timed rebuilds
Just curious here but wondering what are the reasons to switch to seaweed here? |
A couple of things:
|
Oh i see! Thanks for explaining!!
I am pretty curious how this issue actually is going to work out. But make sense to me. |
In 3.0 when the client asks to download a file, Cryostat puts the requested data into the S3 provider (seaweed) if necessary (ie for an active recording. For an archived recording it's already there so we skip this first step), then responds to the client with a redirect response to another endpoint. When the client hits that endpoint, Cryostat asks S3 to generate a presigned URL for downloading that file, which comes with some query parameters and things that ensure the request has not been tampered with and the client is only able to access that one file. Cryostat then responds to the client again with another redirect response, this time pointing it to the S3 presigned URL. The client finally goes and makes a request to this URL, including the query parameters, and S3 sends the file back to the client. In So if 3.0 can't use presigned URLs in the end due to the auth proxy architecture, then it'll just need to reimplement something like that 2.x JWT download flow. From the client's perspective they are actually quite similar already, so this is just internal implementation detail. |
Understood now! Thanks for the detailed explanations! |
I still need to get around to deploying 3.0 with Seaweed in OpenShift and an auth proxy, set up the Services and Routes, and test how authentication between Cryostat and Seaweed works, and then how authentication between Seaweed and an external client (your browser) works.
|
Actually, I am wondering if the client needs to authenticate with Seaweed at all if using presigned url. I thought the credentials will only be used to generate the url and specify the scope/action. Then, wouldn't it be a publicly available url to download anonymously? Then, I guess seaweed can just be behind proxy with OpenShift credentials (some tweaks on web client to include the bearer when accessing presigned url) or no proxy at all. Or I might be missing sth. |
The client won't need Seaweed credentials when using a presigned URL, but it will still need to pass through the auth proxy with OpenShift credentials. That should be easy, I don't see any reason that won't look basically the same as how it already looks with oauth2-proxy in smoketest. |
Sounds good! Thanks for the details ^^ |
@ebaron I think there's more work to do in here around tuning the volume server parameters - for some reason it didn't like the defaults of "no max (number of) volumes" and 1GB per volume, so over in cryostatio/cryostat-helm#111 I have it deployed using #4 with some smaller hardcoded limits that seem to work for a basic smoketest. Otherwise, I think this is settled enough to use as a launching point for more work like cryostatio/cryostat-helm#111 , cryostatio/cryostat#241 , cryostatio/cryostat-operator#710 . |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good!